<?php

class AdmNotificacionEstadistica extends TPage {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("Admin"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  //funciones pagina
  const FUNCION_VER = "Ver";
  //indices arreglo
  const ARRAY_DETALLE = 0;

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos($idNotificacion){
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = Notificacion::obtenerDetalle($idNotificacion);
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS.$nombrePagina, $arr);

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $idNotificacion = $this->Request["id"];
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS.$nombrePagina);

      //inicializa controles en vacio
      $titulo = "";
      $fechaInicio = "";
      $fechaTermino = "";
      $recordarCada = "";
      $descripcion = "";
      $estado = "";
      $diferenciaDias = "";

      if(!is_null($arr)) {
        $arrDetalle = $arr[self::ARRAY_DETALLE];
        $totalRegistros = count($arrDetalle);
        if($totalRegistros > 0) {
          $row = $arrDetalle[0];
          $titulo = $row["Titulo"];
          $fechaInicio = $row["FechaInicio"];
          $fechaTermino = $row["FechaTermino"];
          $recordarCada = $row["RecordarCada"];
          $descripcion = $row["Descripcion"];
          $estado = $row["Estado"];
          $diferenciaDias = $row["DiferenciaDias"];
        }
      }
      $this->txtIdNotificacion->Value = $idNotificacion;
      $this->lblTitulo->Text = $titulo;
      $this->lblFechaInicio->Text = $fechaInicio;
      $this->lblFechaTermino->Text = $fechaTermino;
      $this->lblRecordarCada->Text = ($recordarCada == "-1") ? "" : $recordarCada;
      $this->lblDescripcion->Text = $descripcion;
      $this->lblPlazoDias->Visible = ($idNotificacion == "0") ? false : true;

      //setea texto plazo
      switch ($estado) {
        case "Vencido":
          $textoPlazoDias = "<span class=\"cssInactivo\">Terminado</span>";
          break;
        case "Activo":
          if($diferenciaDias == "0") {
            $textoPlazoDias = "Termina hoy";
          } elseif($diferenciaDias == "1") {
            $textoPlazoDias = "Termina ma&ntilde;ana";
          } else {
            $textoPlazoDias = "Terminar&aacute; en: $diferenciaDias d&iacute;a".( ($diferenciaDias == "1") ? "":"s" );
          }
          $textoPlazoDias = "<span class=\"cssMensajeExito\">".$textoPlazoDias."</span>";
          break;
        case "Programado":
          if($diferenciaDias == "1") {
            $textoPlazoDias = "Se activar&aacute; ma&ntilde;ana";
          } else {
            $textoPlazoDias = "Se activar&aacute; en: $diferenciaDias d&iacute;a".( ($diferenciaDias == "1") ? "":"s" );
          }
          $textoPlazoDias = "<span class=\"cssAlerta\">".$textoPlazoDias."</span>";
          break;
        default:
          $textoPlazoDias = "";
          break;
      }
      $this->lblPlazoDias->Text = $textoPlazoDias;

    } catch (Exception $e) {
      $titulo = "";
      $fechaInicio = "";
      $fechaTermino = "";
      $recordarCada = "";
      $descripcion = "";
      $estado = "";
      $diferenciaDias = "";
    }
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      $idNotificacion = $this->Request["id"];
      //agrega atributo a control
      $this->btnFiltrar->Attributes->Add("onclick", "validarFormularioEstadisticaNotificacion('$idNotificacion')");
      $this->btnCerrar->Attributes->Add("onclick", "cerrarPopUpEstadisticaNotificacion()");

      //inicializa los controles del Correlativo y Locales
      $this->inicializaControlesEventoWindowOnLoad($isPostBack);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa los controles al cargar la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControlesEventoWindowOnLoad($isPostBack) {
    $nombrePagina = $this->obtenerNombrePagina();
    $sb = new StringBuilder();

    //se deja estructura por si se utiliza en algun momento
    //$sb->appendLine("-- codigo --");
    //$this->Page->ClientScript->registerEndScript("windowOnLoad", $sb->toString());
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $idPagina = $this->Request["id"];
    //verifica los permisos para los controles
    $this->pnlContenido->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);

    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }



  /**
   * obtiene nombre de la pagina actual
   * @return <type>
   * @author VSR, 01/01/2011
   */
  private function obtenerNombrePagina(){
    $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
    return $nombrePagina;
  }







//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //si no esta conectado entonces lo redirecciona al login
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    $idNotificacion = $this->Request["id"];
    $nombrePagina = $this->obtenerNombrePagina();
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    if(!$this->IsPostBack) {
      $this->obtenerDatos($idNotificacion);
      $this->inicializaControles($this->IsPostBack);
      $this->actualizaInterfaz();
      Utilidades::grabarSessionPorNombre("Estado".$nombrePagina, "");
    }

  }


//</editor-fold>

}

?>
